package com.sitech.portal.report.service.impl;

import com.sitech.ibnms.core.IPage;
import com.sitech.ibnms.core.PageForm;
import com.sitech.portal.report.dao.ITbSysModuleUseLogDao;
import com.sitech.portal.report.domain.TbSysModuleUseLog;
import com.sitech.portal.report.form.SysModuleUseCountForm;
import com.sitech.portal.report.service.ITbSysModuleUseLogService;
import com.sitech.portal.system.dao.ISysModuleDao;
import com.sitech.portal.system.domain.TblSYS_MODULE;

import java.util.Date;
import java.util.List;

/**
 * Created by Administrator on 2015/6/23.
 */
public class TbSysModuleUseLogServiceImpl implements ITbSysModuleUseLogService {
    private ITbSysModuleUseLogDao tbSysModuleUseLogDao;
    private ISysModuleDao sysModuleDao;

    @Override
    public void addModuleUserLog(String path,String loginId){
        TblSYS_MODULE module=sysModuleDao.getModuleByPath(path);
        TbSysModuleUseLog tbSysModuleUseLog = new TbSysModuleUseLog();
        tbSysModuleUseLog.setMODULE_PATH(path);
        tbSysModuleUseLog.setUSE_LOGIN_ID(loginId);
        tbSysModuleUseLog.setUSE_TIME(new Date());
        if(module!=null){
            tbSysModuleUseLog.setMODULE_DIRECTORY(module.getMODULE_DIRECTORY());
            tbSysModuleUseLog.setMODULE_ID(module.getMODULE_ID());
            tbSysModuleUseLog.setMODULE_NAME(module.getMODULE_NAME());
            tbSysModuleUseLogDao.addSysModuleUseLog(tbSysModuleUseLog);
        }
    }

    @Override
    public IPage countModuleUseCount(PageForm pageForm) {
        return tbSysModuleUseLogDao.countModuleUseCount(pageForm);
    }

    @Override
    public List<SysModuleUseCountForm> countModuleUseCountByTimeInterval(Date startDate, Date endDate, Integer topN) {
        String orderWay = "DESC";
        if (topN < 0) {
            orderWay = "ASC";
        }
        topN = Math.abs(topN);
        return tbSysModuleUseLogDao.countModuleUseCountByTimeInterval(startDate, endDate, topN, orderWay);
    }

    public void setTbSysModuleUseLogDao(ITbSysModuleUseLogDao tbSysModuleUseLogDao) {
        this.tbSysModuleUseLogDao = tbSysModuleUseLogDao;
    }

    public void setSysModuleDao(ISysModuleDao sysModuleDao) {
        this.sysModuleDao = sysModuleDao;
    }
}
